package model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

//Item de la cotizacion que guardo que se va a corresponder con RespuestaCotizacionXML
@SuppressWarnings("serial")
@Entity
@Table (name="items_cotizacion")
public class ItemCotizacion implements Serializable{
	
	public ItemCotizacion(String codigo, Integer cantidad,
			String caracteristicas, String marca, String origen,
			Double precioUnitario, Double precioConDescuentoInteres,
			Double precioFinal, Integer idlistaprecios) {
		super();
		this.codigo = codigo;
		this.cantidad = cantidad;
		this.caracteristicas = caracteristicas;
		this.marca = marca;
		this.origen = origen;
		this.precioUnitario = precioUnitario;
		this.precioConDescuentoInteres = precioConDescuentoInteres;
		this.precioFinal = precioFinal;
		this.idlistaprecios = idlistaprecios;
	}
	public ItemCotizacion() {
		this.itemsVentas = new ArrayList<ItemVenta>();
	}
	private Integer id;
	private String codigo;
	private Integer cantidad;
	private String caracteristicas;
	private String marca;
	private String origen;
	//precio unitario recibido de CC 
	private Double precioUnitario;
	//precio recibido de CC aplicandole % de descuento del cliente o interes por la condicion de pago
	private Double precioConDescuentoInteres;
	//precio "precioConDescuentoInteres" al que luego se le aplica el % de IVA
	private Double precioFinal;	
	private Integer idlistaprecios;
	private Cotizacion cotizacion;
	private List<ItemVenta> itemsVentas;
	
	
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public Integer getCantidad() {
		return cantidad;
	}
	public void setCantidad(Integer cantidad) {
		this.cantidad = cantidad;
	}
	public String getCaracteristicas() {
		return caracteristicas;
	}
	public void setCaracteristicas(String caracteristicas) {
		this.caracteristicas = caracteristicas;
	}
	public String getMarca() {
		return marca;
	}
	public void setMarca(String marca) {
		this.marca = marca;
	}
	public String getOrigen() {
		return origen;
	}
	public void setOrigen(String origen) {
		this.origen = origen;
	}
	public Double getPrecioUnitario() {
		return precioUnitario;
	}
	public void setPrecioUnitario(Double precioUnitario) {
		this.precioUnitario = precioUnitario;
	}

	public Double getPrecioFinal() {
		return precioFinal;
	}
	public void setPrecioFinal(Double precioFinal) {
		this.precioFinal = precioFinal;
	}
	public Integer getIdlistaprecios() {
		return idlistaprecios;
	}
	public void setIdlistaprecios(Integer idlistaprecios) {
		this.idlistaprecios = idlistaprecios;
	}
	public Double getPrecioConDescuentoInteres() {
		return precioConDescuentoInteres;
	}
	public void setPrecioConDescuentoInteres(Double precioConDescuentoInteres) {
		this.precioConDescuentoInteres = precioConDescuentoInteres;
	}
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id_item")
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_cotizacion")
	public Cotizacion getCotizacion() {
		return cotizacion;
	}
	public void setCotizacion(Cotizacion cotizacion) {
		this.cotizacion = cotizacion;
	}
	@OneToMany(mappedBy = "itemCotizado")
	public List<ItemVenta> getItemsVentas() {
		return itemsVentas;
	}
	public void setItemsVentas(List<ItemVenta> itemsVentas) {
		this.itemsVentas = itemsVentas;
	}
}
